package org.jeecg.modules.hbjh.requestVo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.bocom.api.AbstractBocomRequest;
import com.bocom.api.BizContent;
import org.jeecg.modules.hbjh.responseVo.ReceiptBackfillResponseV1;

import java.util.List;


public class ReceiptBackfillRequestV1 extends AbstractBocomRequest<ReceiptBackfillResponseV1> {

    @Override
    public Class<ReceiptBackfillResponseV1> getResponseClass() {
        return ReceiptBackfillResponseV1.class;
    }

    @Override
    public boolean isNeedEncrypt() {
        return false;
    }

    @Override
    public String getMethod() {
        return "POST";
    }

    @Override
    public Class<? extends BizContent> getBizContentClass() {
        return ReceiptBackfillRequestV1Biz.class;
    }


    public static class ReceiptBackfillRequestV1Biz implements BizContent {

        /**
         * 备注
         */
        @JsonProperty("bz")
        private String bz;

        /**
         * 数据类型
         */
        @JsonProperty("sjlx")
        private String sjlx;

        /**
         * 单据编号
         */
        @JsonProperty("djbh")
        private String djbh;

        /**
         * 单据编号数组，多单据合并开票时有值
         */
        @JsonProperty("djbhs")
        private String[] djbhs;

        /**
         * 操作类型,1-开票  2-作废 3-红冲
         */
        @JsonProperty("czlx")
        private String czlx;

        /**
         * 发票代码
         */
        @JsonProperty("fpdm")
        private String fpdm;

        /**
         * 发票号码
         */
        @JsonProperty("fphm")
        private String fphm;

        /**
         * 全电发票号码
         */
        @JsonProperty("qdfphm")
        private String qdfphm;

        /**
         * 发票类型代码
         */
        @JsonProperty("fplxdm")
        private String fplxdm;

        /**
         * 公司代码
         */
        @JsonProperty("gsdm")
        private String gsdm;

        /**
         * 开票金额
         */
        @JsonProperty("je")
        private String je;

        /**
         * 开票人
         */
        @JsonProperty("kpr")
        private String kpr;

        /**
         * 开票日期
         */
        @JsonProperty("kprq")
        private String kprq;

        /**
         * 税额
         */
        @JsonProperty("se")
        private String se;

        /**
         * 数据来源
         */
        @JsonProperty("sjly")
        private String sjly;

        /**
         * 原发票代码
         */
        @JsonProperty("yfpdm")
        private String yfpdm;

        /**
         * 原发票号码
         */
        @JsonProperty("yfphm")
        private String yfphm;

        /**
         * 原数电发票号码
         */
        @JsonProperty("yqdfphm")
        private String yqdfphm;

        /**
         * "明细信息"
         */
        @JsonProperty("mxxx")
        private List<Mxxx> mxxx;

        @JsonProperty("ywdjxx")
        private List<Ywdjxx> ywdjxx;

        public static class Ywdjxx {
            @JsonProperty("djbh")
            private String djbh;
            @JsonProperty("khmc")
            private String khmc;

            @JsonProperty("khsh")
            private String khsh;
            @JsonProperty("hjje")
            private String hjje;
            @JsonProperty("hjse")
            private String hjse;
            @JsonProperty("jshj")
            private String jshj;

            public String getDjbh() {
                return djbh;
            }

            public void setDjbh(String djbh) {
                this.djbh = djbh;
            }

            public String getKhmc() {
                return khmc;
            }

            public void setKhmc(String khmc) {
                this.khmc = khmc;
            }

            public String getKhsh() {
                return khsh;
            }

            public void setKhsh(String khsh) {
                this.khsh = khsh;
            }

            public String getHjje() {
                return hjje;
            }

            public void setHjje(String hjje) {
                this.hjje = hjje;
            }

            public String getHjse() {
                return hjse;
            }

            public void setHjse(String hjse) {
                this.hjse = hjse;
            }

            public String getJshj() {
                return jshj;
            }

            public void setJshj(String jshj) {
                this.jshj = jshj;
            }
        }

        public static class Mxxx {
            /**
             * 不含税单价
             */
            @JsonProperty("bhsdj")
            private String bhsdj;

            /**
             * 不含税金额
             */
            @JsonProperty("bhsje")
            private String bhsje;

            /**
             * 单据编号
             */
            @JsonProperty("djbh")
            private String djbh;

            /**
             * 单据行号
             */
            @JsonProperty("djhh")
            private String djhh;

            /**
             * 规格型号
             */
            @JsonProperty("ggxh")
            private String ggxh;

            /**
             * 含税单价
             */
            @JsonProperty("hsdj")
            private String hsdj;

            /**
             * 含税金额
             */
            @JsonProperty("hsje")
            private String hsje;

            /**
             * 合同行号
             */
            @JsonProperty("hthh")
            private String hthh;

            /**
             * 单位
             */
            @JsonProperty("jldw")
            private String jldw;

            /**
             * 税额
             */
            @JsonProperty("se")
            private String se;

            /**
             * 商品代码
             */
            @JsonProperty("spdm")
            private String spdm;

            /**
             * 商品名称
             */
            @JsonProperty("spmc")
            private String spmc;

            /**
             * 商品数量
             */
            @JsonProperty("spsl")
            private String spsl;

            /**
             * 税收编码
             */
            @JsonProperty("ssbm")
            private String ssbm;

            /**
             * 税率
             */
            @JsonProperty("tax")
            private String tax;


            public String getBhsdj() {
                return bhsdj;
            }

            public void setBhsdj(String bhsdj) {
                this.bhsdj = bhsdj;
            }

            public String getBhsje() {
                return bhsje;
            }

            public void setBhsje(String bhsje) {
                this.bhsje = bhsje;
            }

            public String getDjbh() {
                return djbh;
            }

            public void setDjbh(String djbh) {
                this.djbh = djbh;
            }

            public String getDjhh() {
                return djhh;
            }

            public void setDjhh(String djhh) {
                this.djhh = djhh;
            }

            public String getGgxh() {
                return ggxh;
            }

            public void setGgxh(String ggxh) {
                this.ggxh = ggxh;
            }

            public String getHsdj() {
                return hsdj;
            }

            public void setHsdj(String hsdj) {
                this.hsdj = hsdj;
            }

            public String getHsje() {
                return hsje;
            }

            public void setHsje(String hsje) {
                this.hsje = hsje;
            }

            public String getHthh() {
                return hthh;
            }

            public void setHthh(String hthh) {
                this.hthh = hthh;
            }

            public String getJldw() {
                return jldw;
            }

            public void setJldw(String jldw) {
                this.jldw = jldw;
            }

            public String getSe() {
                return se;
            }

            public void setSe(String se) {
                this.se = se;
            }

            public String getSpdm() {
                return spdm;
            }

            public void setSpdm(String spdm) {
                this.spdm = spdm;
            }

            public String getSpmc() {
                return spmc;
            }

            public void setSpmc(String spmc) {
                this.spmc = spmc;
            }

            public String getSpsl() {
                return spsl;
            }

            public void setSpsl(String spsl) {
                this.spsl = spsl;
            }

            public String getSsbm() {
                return ssbm;
            }

            public void setSsbm(String ssbm) {
                this.ssbm = ssbm;
            }

            public String getTax() {
                return tax;
            }

            public void setTax(String tax) {
                this.tax = tax;
            }
        }

        public List<Ywdjxx> getYwdjxx() {
            return ywdjxx;
        }

        public void setYwdjxx(List<Ywdjxx> ywdjxx) {
            this.ywdjxx = ywdjxx;
        }

        /**
         * 请求方机构编号
         */
        @JsonProperty("req_org_code")
        private String reqOrgCode;

        public String getBz() {
            return bz;
        }

        public void setBz(String bz) {
            this.bz = bz;
        }

        public String getSjlx() {
            return sjlx;
        }

        public void setSjlx(String sjlx) {
            this.sjlx = sjlx;
        }

        public String getDjbh() {
            return djbh;
        }

        public void setDjbh(String djbh) {
            this.djbh = djbh;
        }

        public String[] getDjbhs() {
            return djbhs;
        }

        public void setDjbhs(String[] djbhs) {
            this.djbhs = djbhs;
        }

        public String getCzlx() {
            return czlx;
        }

        public void setCzlx(String czlx) {
            this.czlx = czlx;
        }

        public String getFpdm() {
            return fpdm;
        }

        public void setFpdm(String fpdm) {
            this.fpdm = fpdm;
        }

        public String getFphm() {
            return fphm;
        }

        public void setFphm(String fphm) {
            this.fphm = fphm;
        }

        public String getQdfphm() {
            return qdfphm;
        }

        public void setQdfphm(String qdfphm) {
            this.qdfphm = qdfphm;
        }

        public String getFplxdm() {
            return fplxdm;
        }

        public void setFplxdm(String fplxdm) {
            this.fplxdm = fplxdm;
        }

        public String getGsdm() {
            return gsdm;
        }

        public void setGsdm(String gsdm) {
            this.gsdm = gsdm;
        }

        public String getJe() {
            return je;
        }

        public void setJe(String je) {
            this.je = je;
        }

        public String getKpr() {
            return kpr;
        }

        public void setKpr(String kpr) {
            this.kpr = kpr;
        }

        public String getKprq() {
            return kprq;
        }

        public void setKprq(String kprq) {
            this.kprq = kprq;
        }

        public String getSe() {
            return se;
        }

        public void setSe(String se) {
            this.se = se;
        }

        public String getSjly() {
            return sjly;
        }

        public void setSjly(String sjly) {
            this.sjly = sjly;
        }

        public String getYfpdm() {
            return yfpdm;
        }

        public void setYfpdm(String yfpdm) {
            this.yfpdm = yfpdm;
        }

        public String getYfphm() {
            return yfphm;
        }

        public void setYfphm(String yfphm) {
            this.yfphm = yfphm;
        }

        public String getYqdfphm() {
            return yqdfphm;
        }

        public void setYqdfphm(String yqdfphm) {
            this.yqdfphm = yqdfphm;
        }

        public List<Mxxx> getMxxx() {
            return mxxx;
        }

        public void setMxxx(List<Mxxx> mxxx) {
            this.mxxx = mxxx;
        }

        public String getReqOrgCode() {
            return reqOrgCode;
        }

        public void setReqOrgCode(String reqOrgCode) {
            this.reqOrgCode = reqOrgCode;
        }
    }
}
